package com.datamanage.processing.service;

import com.datamanage.processing.entity.ProcessingTask;
import com.datamanage.processing.dto.ProcessingTaskDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.Optional;

public interface ProcessingTaskService {
    ProcessingTask createTask(ProcessingTaskDTO taskDTO, Long userId, Long companyId);
    
    Optional<ProcessingTask> getTaskById(Long id, Long companyId);
    
    Page<ProcessingTask> getAllTasks(Long companyId, Pageable pageable);
    
    Page<ProcessingTask> getTasksByUserId(Long userId, Long companyId, Pageable pageable);
    
    Page<ProcessingTask> getTasksByStatus(String status, Long companyId, Pageable pageable);
    
    ProcessingTask updateTask(Long id, ProcessingTaskDTO taskDTO, Long companyId);
    
    void deleteTask(Long id, Long companyId);
    
    ProcessingTask startTask(Long id, Long companyId);
    
    ProcessingTask pauseTask(Long id, Long companyId);
    
    ProcessingTask resumeTask(Long id, Long companyId);
    
    ProcessingTask cancelTask(Long id, Long companyId);
}